package com.tools.service.license;

import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Map;


/**
 * 密钥管理服务
 */
public interface KeyManagementService {
    /**
     * 生成密钥对
     * @return 包含私钥和公钥的PEM编码字符串
     * @throws Exception 如果生成密钥对失败
     */
    Map<String, String> generateKeyPair() throws Exception;
    /**
     * 加载私钥
     * @param privateKeyPem 私钥的PEM编码字符串
     * @throws Exception 如果加载私钥失败
     */
    void loadPrivateKey(String privateKeyPem) throws Exception;
    /**
     * 加载公钥
     * @param publicKeyPem 公钥的PEM编码字符串
     * @throws Exception 如果加载公钥失败
     */
    void loadPublicKey(String publicKeyPem) throws Exception;
    /**
     * 获取缓存的私钥
     * @return 缓存的私钥
     * @throws Exception 如果获取私钥失败
     */
    PrivateKey getCachedPrivateKey() throws Exception;
    /**
     * 获取缓存的公钥
     * @return 缓存的公钥
     */
    PublicKey getCachedPublicKey();
    /**
     * 检查密钥是否已加载
     * @return 如果密钥已加载则返回true，否则返回false
     */
    boolean isKeysLoaded();

}
